package maggames.core.interfaces;

import maggames.core.GameTurn;

/**
 * Main Game AI interface.  All game AI implementations should implement this interface to allow for them to be 
 * dynamicallly loaded into the game loader.
 * 
 * @author BenjaminPLee
 * @version 1.0
 */
public interface GameAI {
	
	/**
	 * Simple method to determine the AI's next move based on the current game state.  The game engine object
	 * contains information on the current game board, current user turn, and current game state.  Implemented
	 * AI's should check if the resulting generated turn is valid prior to returning.  If an invalid state is returned
	 * the actual turn chosen is up to the game implementation.
	 * 
	 * @param engine current game engine (contains game board and game state)
	 * @return the chosen turn the AI has decided upon.
	 */
	public abstract GameTurn getMove(GameEngine engine);
}
